Questão 14 - HCPA 2009/4 - ANALISTA DE SISTEMAS I (ADMINISTRADOR DE BANCO DE DADOS)
questão 14 sql plus oracle 9i
Veja abaixo a resposta correta da questão e uma breve análise sobre o conteúdo.
Considere a questão abaixo com base em seus conhecimentos de SQLPLUS do banco de dados Oracle 9i.
Suponha que você atualizou a tabela tbl_produto, acrescentando 10% ao PRECO de todos os produtos desta tabela,
mas, por uma solicitação de seu gerente, você precisa restaurar o PRECO dos produtos que têm QUANTIDADE
menor ou igual a 10. Antes de fazer as alterações na tbl_produto, você criou uma tabela tbl_produto_arm como
cópia de segurança.
SQL> desc tbl_produto
Name Type
#cod number
descricao varchar2(50)
preco number(10,2)
quantidade number(7)
Analisando a estrutura acima, qual deve ser o comando necessário para atender à solicitação da gerência?
(A) update tbl_produto p1
set p1.preco = (select p2.preco from tbl_produto_arm p2
where p2.quantidade <= 10)
where p1.cod = p2.cod;
(B) update tbl_produto p1
set p1.preco = (select p2.preco from tbl_produto_arm p2
where p1.cod = p2.cod and p2.quantidade <= 10);
(C) update tbl_produto p1
set p1.preco = p2.preco
where p1.cod in (select p2.cod from tbl_produto_arm p2
where p2.quantidade <= 10);
(D) update tbl_produto p1
set p1.preco = (select p2.preco from tbl_produto_arm p2
where p1.cod = p2.cod)
where p1.quantidade <= 10;
(E) update tbl_produto p1, tbl_produto_arm p2
set p1.preco = p2.preco
where p1.cod = p2.cod
and p1.quantidade <= 10;
Desafio de SQLPLUS: Restauração do Preço dos Produtos
Nesta questão, analisaremos uma situação envolvendo o SQL PLUS no banco de dados Oracle 9i. O objetivo é restaurar os preços dos produtos que têm uma quantidade igual ou inferior a 10, com base em uma tabela de backup chamada tbl_produto_arm.
Descrição da Questão:
Suponha que a tabela tbl_produto tenha sido atualizada, aumentando o preço de todos os produtos em 10%. Agora, a gerência solicitou a restauração dos preços dos produtos que têm uma quantidade menor ou igual a 10. Antes de realizar qualquer alteração na tabela tbl_produto, foi criada uma tabela de backup chamada tbl_produto_arm.
A estrutura da tabela tbl_produto é a seguinte:
SQL> desc tbl_produto
Name Type
#cod number
descricao varchar2(50)
preco number(10,2)
quantidade number(7)
Resposta Correta:
Na alternativa (D), a subconsulta busca o preço correspondente na tabela de backup tbl_produto_arm com base no código, e a cláusula where principal limita a atualização apenas para os produtos que têm quantidade menor ou igual a 10 na tabela tbl_produto.
update tbl_produto p1
set p1.preco = (select p2.preco from tbl_produto_arm p2
where p1.cod = p2.cod)
where p1.quantidade <= 10;
Portanto, a alternativa (D) está correta, pois atende aos requisitos da questão, restaurando os preços apenas para os produtos que têm quantidade menor ou igual a 10.
Justificativa:
Na alternativa (A), a subconsulta busca o preço correspondente na tabela de backup tbl_produto_arm com base na quantidade, o que não atende ao requisito da questão. Além disso, a comparação de p1.cod = p2.cod está correta, mas o critério de seleção do preço está baseado na quantidade, não no código.
Na alternativa (B), a subconsulta busca o preço correspondente na tabela de backup tbl_produto_arm com base no código e na quantidade, mas a cláusula where principal está ausente, o que faz com que a atualização seja feita para todos os registros da tabela tbl_produto.
Na alternativa (C), a atualização é realizada com base no código presente na tabela de backup tbl_produto_arm, mas o critério de seleção está baseado apenas na quantidade, o que não atende ao requisito da questão. Além disso, a cláusula in pode resultar em atualização incorreta, pois não garante a correspondência exata entre os códigos das duas tabelas.
Na alternativa (E), a atualização é feita corretamente com base na correspondência dos códigos entre as duas tabelas, mas não leva em consideração que os preços devem ser restaurados com base na tabela de backup tbl_produto_arm.
Portanto, todas as alternativas têm algum problema em relação aos critérios de seleção dos preços para restauração ou na forma como são aplicadas as cláusulas where e set.
Assunto Principal da Questão:
SQLPLUS no contexto de atualização de tabelas com base em subconsultas e condições.
Assuntos a Estudar:
Utilização de subconsultas em SQLPLUS.
Atualização de tabelas com base em condições específicas.
Uso de backups para restauração de dados.
Nível de Dificuldade:
Moderado. Requer compreensão das estruturas de consulta e atualização de tabelas no SQLPLUS.
Resposta no Oracle 12c:
A resposta provavelmente seria a mesma no Oracle 12c, já que as estruturas e funcionalidades do SQLPLUS não costumam mudar significativamente entre versões. No entanto, é sempre importante verificar a documentação específica da versão para confirmar a sintaxe e os recursos disponíveis.
Leia mais em: iretoaoponto-tech.com.br/conc...